<?php

include 'connfig.php';

$dy = dataBase::staticData($mysql_connet);
//在外部调用静态方法，并传值

//$a = new adsad();
//$a = Adsad();



 class dataBase{

     Private  Static $db = null  ;
     //声明私有的静态属性$db 赋值null 用处：实例化今天方法

     Public  $dataBases;
     //声明一个公共属性 用来接受数据库信息
     
     Private function __construct($mysql_connet){
     //声明私有的构造方法，防止外部实例化
   
      $this->dataConnet($mysql_connet);
     } //构造方法结束括号

     Public Static function staticData($mysql_connet){
     //声明一个公有的静态方法 StaticDate 用来实例化 类dataBase

       self::$db=new dataBase($mysql_connet); 
       //使用静态方法实例化 类dataBase  
       
       return self::$db;
       //实例化后 返回self::$db的值；
      
     }//staticDate end

     Private function dataConnet($mysql_connet){
     //声明一个数据库连接方法  私有的
     //$mysql_connet 
     
       try {
		
                 $this->dataBases = new PDO(

   $mysql_connet['dbsql'].':host='.$mysql_connet['dbhost'].';dbname='.$mysql_connet['dbname'],
   $mysql_connet['dbusername'],
   $mysql_connet['dbuserpwd'],array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \''.$mysql_connet['dbcharset'].'\''));
				//有可能会发生的异常信息
			
			} catch (PDOException $e) {
				//发生后的异常信息提示；
				echo  "Error!: " . $e->getMessage() . "<br/>";
				die();
			}



     }//dataconnet 结束

    
    Public function SelectOne($sql,$type){
     //声明一个数据查询类 SlectOne  功能：查询一条数据  返回最后一条受影响的数据
      $pre = $this->dataBases->prepare($sql); 
     //预处理 结果赋值$pre  $pre只在方all()法内有效   
     
     $pre->execute(); 
     //执行预处理
        switch ($type) {
				case 0:
					return $bool=$pre->fetch(PDO::FETCH_BOTH);  //显示方式返回索引数组＋关联数组
					break;
				case 1:
					return $bool=$pre->fetch(PDO::FETCH_ASSOC);  //返回方式关联数组
					break;
				case 2:
					return $bool=$pre->fetch(PDO::FETCH_NUM);   //返回方式索引数组
					break;
				case 3:
					return $bool=$pre->fetch(PDO::FETCH_OBJ);   //返回的是一个对象类型
					break;
				
				default:
					echo '没有类型';
				break;

 } //switch end
   
    }//SelectOne end
    

    Public function SelectAll($sql,$type){
    //声明一个数据查询类 SlectAll  功能：查询全部数据  返回全部的数据  调用时 使用循环输出
    //$sql  形式参数   由外部传入 的sql语句  
    //$type 形式参数   由外部传入 值为最后输出的类型
      
     $pre = $this->dataBases->prepare($sql); 
     //预处理 结果赋值$pre  $pre只在方all()法内有效   
     
     $pre->execute(); 
     //执行预处理
        switch ($type) {
				case 0:
					return $bool=$pre->fetchAll(PDO::FETCH_BOTH);  //显示方式返回索引数组＋关联数组
					break;
				case 1:
					return $bool=$pre->fetchAll(PDO::FETCH_ASSOC);  //返回方式关联数组
					break;
				case 2:
					return $bool=$pre->fetchAll(PDO::FETCH_NUM);   //返回方式索引数组
					break;
				case 3:
					return $bool=$pre->fetchAll(PDO::FETCH_OBJ);   //返回的是一个对象类型
					break;
				
				default:
					echo '没有类型';
				break;
      } //switch end

    }//SelectAll end
   

   
Public function exec($sql){
       // var_dump($sql);
      return $bool=$this->dataBases->exec($sql);

   }
 }//类结束括号

?>